package com.csun.cmny.provider.service;

import com.csun.cmny.provider.model.dto.user.OmcUserQueryDto;
import com.csun.cmny.provider.model.dto.user.UserRoleDto;
import com.csun.cmny.provider.model.dto.volunteer.VolunteerQueryDto;
import com.csun.cmny.provider.model.vo.*;

import java.util.List;

/**
 * @Auther: chisj chisj@foxmal.com
 * @Date: 2019-05-27 09:52
 * @Description: the interface uac rpc service
 */
public interface UacRpcService {

    /**
     * 获取志愿者信息
     *
     * @param volunteerId   志愿者Id
     *
     * @return  志愿者信息
     */
    VolunteerVo getVolunteerByVolunteerId(Long volunteerId);

    /**
     * 更新志愿者积分
     *
     * @param volunteerId   志愿者Id
     * @param integral      积分
     *
     * @return  the int.
     */
    Integer updateVolunteerIntegralByVolunteerId(Long volunteerId, Integer integral);

    /**
     * 查询志愿者列表
     *
     * @param volunteerQueryDto volunteer query dto
     *
     * @return  the list.
     */
    List<VolunteerVo> queryVolunteerListWithPage(VolunteerQueryDto volunteerQueryDto);

    /**
     * 根据志愿者Id集合查询志愿者列表
     *
     * @param volunteerIdList   volunteer id list
     *
     * @return the list.
     */
    List<VolunteerVo> queryVolunteerListByVolunteerIds(List<Long> volunteerIdList);

    /**
     * 根据用户Id查询角色列表
     *
     * @param userId    user id
     *
     * @return
     */
    List<RpcRoleVo> queryRoleListByUserId(Long userId);

    /**
     * 根据用户Id查询志愿者信息
     *
     * @param userId    user id
     *
     * @return
     */
    VolunteerVo getVolunteerByUserId(Long userId);

    /**
     * 根据用户Id查询用户信息
     *
     * @param userList  user list
     *
     * @return  the list
     */
    List<RpcUserVo> queryUserListByUserIds(List<Long> userList);


    /**
     * 根据用户Id查询商家信息
     *
     * @param userList  user list
     *
     * @return  the list
     */
    List<RpcMerchantVO> queryMerchantListByIdList(List<Long> userList);

    /**
     * 根据用户Id查询用户信息  护工信息查询
     *
     * @param userList  user list
     *
     * @return  the list
     */
    List<OmcUserVo> queryOmcUserListByUserIds(List<Long> userList);

    //根据姓名模糊查询用户
    List<OmcUserVo> queryOmcUserListByQueryDto(OmcUserQueryDto omcUserQueryDto);

    /**
     * 根据机构ID查询未绑定的护工
     *
     * @param userList  user list
     *
     * @return  the list
     */
    List<OmcUserVo> queryOmcUnUnrsingUserListByUserIds(List<Long> userList,Long groupId,String roleCode);

    /**
     * 根据角色和组织Id查询用户列表
     *
     * @param userRoleDto   user role dto
     *
     * @return
     */
    List<RpcUserVo> queryUserListByRoleCodeAndGroupId(UserRoleDto userRoleDto);

    /**
     * rest user token by user id
     *
     * @param userId    the user id
     */
    void restToken(Long userId);

    /*
    * 校验商家是否是营业状态
    * */
    Integer checkMerchantOnline(Long merchantId);

    /*
    * 校验服务项是否被商家使用
    * */
    Integer checkServiceFirstLevelUsed(Long firstLevelId);

    Integer isStaff(Long staffId);

    /**
     * 大数据平台查询
     *
     * @param groupId
     * @return
     */
    Integer selectVolunteerCount(Long groupId);

    List<GroupInforVo> getAllGroup(Long groupId);

    /**
     * 查询该机构及子机构信息
     *
     * @param groupId   the group id
     *
     * @return  the rpc group vo list.
     */
    List<GroupVo> queryGroupListByGroupId(Long groupId);

    /**
     * 查询该机构子机构信息
     *
     * @param groupId   the group id
     *
     * @return  the rpc group vo list.
     */
    List<GroupVo> queryChildListByGroupId(Long groupId);

    List<CountVo> selectType(Long groupId);
}
